/*
 * Licensed to the Tai Ping Jin Ke
 *
 * Copyright (c) 2022 .
 * All rights reserved.
 * 项目名称：太平金科-基础组件封装层-会话管理-核心依赖
 * 版权说明：本软件属太平金融科技服务(上海)有限公司所有，在未获得太平金融科技服务(上海)有限公司正式授权情况下，任何企业和个人，不能获取、阅读、安装、传播本软件涉及的任何受知识产权保护的内容。
 */
package com.taipingframework.boot.session.properties;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class HttpSessionProperty {

    /**
     * 是否启用SpringSession自动配置，默认启用
     */
    private Boolean enable = true;

    /**
     * 对会话管理相关的redis-key进行分组
     */
    private String cacheKeyGroup;

    /**
     * 当前基于SpringSession封装的spring-boot-starter是将会话标识存放于HTTP请求头的，
     * 通过该参数配置这样的一个会话标识在HTTP请求头的名称。
     */
    private String headerName;

    /**
     * 听说过`应用分身`嘛？其实一台设备是允许多个账户并行(parallel)登录的，
     * 而服务器端要解决的问题则是绝对保证会话数据完全隔离。
     * <p>
     * 无论是安卓应用或者IOS应用还是PC端应用，如果想要支持`多用户`模式，在
     * 终端都必须提供一个`FLAG`参数用于区分同一个IP关联的多个不同会话对象。
     * <p>
     * 在PC端默认使用HTTP请求头参数`User-Agent`区分不同会话对象数据在终端的存储空间，
     * 表示同一台电脑在不同的浏览器中可以使用不同的用户同时登录系统；
     * <p>
     * 我们允许重新配置flag-managed-profile参数，但为了不丢失该参数的值，此举将强制终端
     * 必须借助浏览器的Cookie保存该参数的值，后端在处理HTTP请求时，为了安全性，也必须优先从
     * Cookie中尝试获取该参数值，如果获取不到，其次才会从HTTP请求头中获取该参数的值，
     * 然后在服务器端根据该参数验证会话的有效性。
     */
    private String flagManagedProfile;

    /**
     * 一个登录名(账户名/用户名)最多允许登录多少台设备，默认一个登录名只能登录一台设备
     */
    private Integer credentialsSize = 1;

}
